#pragma once

#include "apdu.h"
#include "apdu_mgr_base.h"

class apdu_cryption_manager : public apdu_mgr_base
{
public:
	apdu_cryption_manager(void);
	~apdu_cryption_manager(void);

public:
	
	apdu * create_apdu_encrypt_init(int app_id, int container_id, unsigned long key_id, 
							unsigned char * iv, int iv_len, unsigned long padding_type, unsigned long feed_bit_len);


	apdu * create_apdu_encrypt(int app_id, int container_id, unsigned long key_id, unsigned char * input, int input_len);

	apdu * create_apdu_encrypt_update(int app_id, int container_id, unsigned long key_id, unsigned char * input, int input_len);

	apdu * create_apdu_encrypt_final(int app_id, int container_id, unsigned long key_id, unsigned char * input, int input_len);


	apdu * create_apdu_decrypt_init(int app_id, int container_id, unsigned long key_id, 
							unsigned char * iv, int iv_len, unsigned long padding_type, unsigned long feed_bit_len);


	apdu * create_apdu_decrypt(int app_id, int container_id, unsigned long key_id, unsigned char * input, int input_len);

	apdu * create_apdu_decrypt_update(int app_id, int container_id, unsigned long key_id, unsigned char * input, int input_len);

	apdu * create_apdu_decrypt_final(int app_id, int container_id, unsigned long key_id, unsigned char * input, int input_len);

	
private:

};
